// PROGRAMA : IDCPBOBS(PROGRAMA BATCH JCL = IDCPBOBS)
// BIBLIOTECA : SISP
// OBJETIVO : GERAR ARQUIVO PARA AMERICAN BANK NOTE COMPANY - ABN
// : CRIMINAL
// NOME DO ARQUIVOGERADO PELO IBM = IDC.CRIMINAL.ENV.ABN
// NOME DO ARQUIVO PARA ABN = ABNIDCRI000001.RID
// : USER = FTPCRIMINAL
// : PASSWORD = FTPCR98
// : IP = 172.16.201.4
// PDS : PDS.SEJUSP
// ARQUIVO(PDS): IDC.CRIMINAL.ENV.ABN

package br.com.vti.sisp_sicrim.antigo.controller.programa;

import java.io.FileWriter;
import java.io.IOException;

import br.com.caelum.vraptor.Post;
import br.com.caelum.vraptor.Path;
import br.com.caelum.vraptor.Resource;
import br.com.caelum.vraptor.Result;
import br.com.vti.sisp_sicrim.antigo.model.DidRg;
import br.com.vti.sisp_sicrim.antigo.model.SicCadastro;
import br.com.vti.sisp_sicrim.antigo.util.ExceptionProgram;
import br.com.vti.sisp_sicrim.antigo.util.Sessao;
import br.com.vti.sisp_sicrim.antigo.util.UtilBean;

/**
 * Classe : Idcpbobs OBJETIVO : GERAR ARQUIVO PARA AMERICAN BANK NOTE COMPANY - ABN *
 * 
 * @author Incode - Data: mai/2014
 * 
 */

@Resource
@Path("/antigo/idcpbobs")
public class Idcpbobs {
	// Views utilizadas
	SicCadastro sicCadastroView = new SicCadastro();
	DidRg vwdidrg = new DidRg();
	// Telas/relatorios utilizados
	// Includes utilizados
	// Areas globais / session // Funcoes/subrotinas
	FuncoesGerais funcoes = new FuncoesGerais();
	FileWriter arquivo1;
	
	Result result;
	Sessao sessao;
	Boolean primeiraVez = false;

	private String wregCrim = "";
	private long wregistroEstadualGeral;
	private String i1;
	private String wobs;
	private int i;
	private int c = 0;
	private int wdatatu;

	public Idcpbobs(Result result, Sessao sessao) {
		this.result = result;
		this.sessao = sessao;
	}

	@Post
	public void executar() {
		try {
			main();
		} catch (Exception e) {
			ExceptionProgram excp = new ExceptionProgram();
			excp.trataErroSiscerro(e, sessao, this.getClass().getSimpleName());
		}
	}

	private void main() throws IOException {
		arquivo1 = new FileWriter(UtilBean.pathFiles() + "arquivo1");
		wdatatu = UtilBean.obtemDataCorrente();

		while (vwdidrg.leituraDataAtualizacao(wdatatu)) {
			while (sicCadastroView.pesquisaDataDocAtu(wdatatu)) {

				i = 0;
				for (i = 1; i <= 191; i++) {
					if (!sicCadastroView.getObservacao(i).trim().equals("")) {
						wregCrim = "";
						// MOVE
						i1 = "|";

						wregistroEstadualGeral = sicCadastroView.getRegEstadualGeral();

						wobs = sicCadastroView.getObservacao(i);
						wregCrim = UtilBean.moveSubstring(wregCrim, 0, 11, "N", wregistroEstadualGeral);
						wregCrim = UtilBean.moveSubstring(wregCrim, 11, 1, "A", i1);
						wregCrim = UtilBean.moveSubstring(wregCrim, 12, 80, "A", wobs);
						arquivo1.write(wregCrim); // / writeworkfile__
						// (;_CMDARGNFILEW;_CMDARGBUF;)
						c += 1;
					} else {
						break;
					}
				}
			}
			sicCadastroView.fecha();
		}
		vwdidrg.fecha();
		if (vwdidrg.registrosProcessados() == 0) {
			UtilBean.mensagemTexto("NAO FOI GERADO REGISTRO NESTA DATA =>" + wdatatu);
		}

		// DELETA REGISTROS DO ARQUIVO DE CONTROLE DO CRIMINAL

		while (vwdidrg.leituraDataAtualizacao(wdatatu)) {
			vwdidrg.exclui();
			// //dao.commit();
		}
		vwdidrg.fecha();

		UtilBean.mensagemTexto("*** TOTAL DE REGISTROS GERADOS PELO CRIMINAL = " + c);
		arquivo1.close();
		return;
	}

}
